package br.com.boreo.boreoapp_orcamento.dao;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import br.com.boreo.boreoapp_orcamento.model.Obra;

public class ObrasDAO {

	private BoreoAppOrcamentoDAO boreodao;
	/*Dados da tabela*/
	private static final String NOME_TABELA = "obras";
	private static final String ID = "_id";
	private static final String ID_CLIENTE = "id_cliente";
	private static final String RESPONSAVEL = "responsavel";
	private static final String TELEFONE = "telefone";
	private static final String OBSERVACAO = "observacao";
	private static final String ENDERECO = "endereco";
	private static final String NUMERO = "numero";
	private static final String BAIRRO = "bairro";
	private static final String CIDADE = "cidade";
	private static final String UF = "uf";
	private static final String CEP = "cep";
	
	public ObrasDAO(Context context) {
		boreodao = BoreoAppOrcamentoDAO.getInstance(context);
	}

	public long inserir(int id_cliente, String responsavel, String telefone, String observacao, String endereco, String numero, String bairro, String cidade, String uf, String cep) {
		ContentValues valores = new ContentValues();
	    valores.put(ID_CLIENTE, id_cliente);
	    valores.put(RESPONSAVEL, responsavel);
	    valores.put(TELEFONE, telefone);
	    valores.put(OBSERVACAO, observacao);
	    valores.put(ENDERECO, endereco);
	    valores.put(NUMERO, numero);
	    valores.put(BAIRRO, bairro);
	    valores.put(CIDADE, cidade);
	    valores.put(UF, uf);
	    valores.put(CEP, cep);
	    
	    long retorno = boreodao.getWritableDatabase().insert(NOME_TABELA, null, valores);
	    boreodao.close();
    	return retorno;
	}

	public long inserirComId(int id, int id_cliente, String responsavel, String telefone, String observacao, String endereco, String numero, String bairro, String cidade, String uf, String cep) {
		ContentValues valores = new ContentValues();
		valores.put(ID, id);
		valores.put(ID_CLIENTE, id_cliente);
	    valores.put(RESPONSAVEL, responsavel);
	    valores.put(TELEFONE, telefone);
	    valores.put(OBSERVACAO, observacao);
	    valores.put(ENDERECO, endereco);
	    valores.put(NUMERO, numero);
	    valores.put(BAIRRO, bairro);
	    valores.put(CIDADE, cidade);
	    valores.put(UF, uf);
	    valores.put(CEP, cep);
	    
	    long retorno = boreodao.getWritableDatabase().insert(NOME_TABELA, null, valores);
	    boreodao.close();
    	return retorno;
	}

	public long alterar(int id, int id_cliente, String responsavel, String telefone, String observacao, String endereco, String numero, String bairro, String cidade, String uf, String cep) {
		ContentValues valores = new ContentValues();
		valores.put(ID_CLIENTE, id_cliente);
	    valores.put(RESPONSAVEL, responsavel);
	    valores.put(TELEFONE, telefone);
	    valores.put(OBSERVACAO, observacao);
	    valores.put(ENDERECO, endereco);
	    valores.put(NUMERO, numero);
	    valores.put(BAIRRO, bairro);
	    valores.put(CIDADE, cidade);
	    valores.put(UF, uf);
	    valores.put(CEP, cep);
	    
    	String[] whereAgrs = {Integer.toString(id)};
    	int retorno = boreodao.getWritableDatabase().update(NOME_TABELA, valores, ID+" = ?", whereAgrs);
    	boreodao.close();
    	return retorno;
	}

	public ArrayList<Obra> selectObras() {
		ArrayList<Obra> c = cursorToArray(boreodao.getReadableDatabase().rawQuery("SELECT * FROM "+NOME_TABELA+" ORDER BY "+ID, null));
		boreodao.close();
		return c;
	}

	public ArrayList<Obra> selectObraPorId(int id_obra) {
		ArrayList<Obra> c = cursorToArray(boreodao.getReadableDatabase().rawQuery("SELECT * FROM "+NOME_TABELA+" WHERE "+ID+" = "+id_obra+" ORDER BY "+ID, null));
		boreodao.close();
		return c;
	}
	
	public ArrayList<Obra> selectObrasPorCliente(int id_cliente) {
		ArrayList<Obra> c = cursorToArray(boreodao.getReadableDatabase().rawQuery("SELECT * FROM "+NOME_TABELA+" WHERE "+ID_CLIENTE+" = "+id_cliente+" ORDER BY "+ID, null));
		boreodao.close();
		return c;
	}

	public void excluirTodasObras() {
		boreodao.getReadableDatabase().delete(NOME_TABELA, null, null);
	}

	private ArrayList<Obra> cursorToArray(Cursor c){
		ArrayList<Obra> obras = new ArrayList<Obra>();
		while (c.moveToNext()) {
			obras.add(new Obra(c.getInt(0), c.getInt(1), c.getString(2), c.getString(3), c.getString(4), c.getString(5), c.getString(6), c.getString(7), c.getString(8), c.getString(9), c.getString(10)));
		}
		return obras;
	}
}
